//package com.joker.airoleplayplatformback.service.impl;
//
//import com.joker.airoleplayplatformback.service.OssService;
//import com.qiniu.common.QiniuException;
//import com.qiniu.http.Response;
//import com.qiniu.storage.Configuration;
//import com.qiniu.storage.Region;
//import com.qiniu.storage.UploadManager;
//import com.qiniu.util.Auth;
//import jakarta.annotation.PostConstruct;
//import jakarta.annotation.PreDestroy;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.stereotype.Service;
//import org.springframework.web.multipart.MultipartFile;
//
//import java.io.File;
//import java.nio.charset.StandardCharsets;
//import java.time.LocalDateTime;
//import java.time.format.DateTimeFormatter;
//import java.util.UUID;
//
///**
// * 七牛云OSS服务实现类
// *
// * @author feixiang.li
// * @since 2025-09-27
// */
//@Slf4j
//@Service
//public class QiniuOssServiceImpl implements OssService {
//
//    @Value("${qiniu.oss.endpoint}")
//    private String endpoint;
//
//    @Value("${qiniu.oss.accessKey}")
//    private String accessKey;
//
//    @Value("${qiniu.oss.secretKey}")
//    private String secretKey;
//
//    @Value("${qiniu.oss.bucketName}")
//    private String bucketName;
//
//    @Value("${qiniu.oss.domain:}")
//    private String domain; // 自定义域名，如果为空则使用七牛云默认域名
//
//    private Auth auth;
//    private UploadManager uploadManager;
//
//    @PostConstruct
//    public void init() {
//        // 创建配置对象，根据实际情况选择Region
//        Configuration cfg = new Configuration(Region.autoRegion());
//
//        // 创建上传管理器
//        uploadManager = new UploadManager(cfg);
//
//        // 创建认证对象
//        auth = Auth.create(accessKey, secretKey);
//
//        log.info("七牛云OSS客户端初始化成功，endpoint: {}, bucket: {}", endpoint, bucketName);
//    }
//
//    @PreDestroy
//    public void destroy() {
//        // 七牛云SDK不需要显式关闭资源
//        log.info("七牛云OSS服务已关闭");
//    }
//
//    @Override
//    public String uploadFile(MultipartFile file, String objectName) {
//        try {
//            log.info("开始上传文件到七牛云OSS: {}", objectName);
//
//            // 获取上传凭证
//            String uploadToken = auth.uploadToken(bucketName);
//
//            // 上传文件
//            Response response = uploadManager.put(file.getBytes(), objectName, uploadToken);
//
//            if (response.isOK()) {
//                String url = generateFileUrl(objectName);
//                log.info("文件上传成功: {}", url);
//                return url;
//            } else {
//                throw new RuntimeException("七牛云上传响应异常: " + response.toString());
//            }
//        } catch (Exception e) {
//            log.error("文件上传失败: {}", e.getMessage(), e);
//            throw new RuntimeException("文件上传失败: " + e.getMessage());
//        }
//    }
//
//    @Override
//    public String uploadFile(File file, String objectName) {
//        try {
//            log.info("开始上传文件到七牛云OSS: {}", objectName);
//
//            // 获取上传凭证
//            String uploadToken = auth.uploadToken(bucketName);
//
//            // 上传文件
//            Response response = uploadManager.put(file, objectName, uploadToken);
//
//            if (response.isOK()) {
//                String url = generateFileUrl(objectName);
//                log.info("文件上传成功: {}", url);
//                return url;
//            } else {
//                throw new RuntimeException("七牛云上传响应异常: " + response.toString());
//            }
//        } catch (Exception e) {
//            log.error("文件上传失败: {}", e.getMessage(), e);
//            throw new RuntimeException("文件上传失败: " + e.getMessage());
//        }
//    }
//
//    @Override
//    public String uploadImage(MultipartFile imageFile) {
//        // 生成图片文件名
//        String originalFilename = imageFile.getOriginalFilename();
//        String extension = "";
//        if (originalFilename != null && originalFilename.contains(".")) {
//            extension = originalFilename.substring(originalFilename.lastIndexOf("."));
//        }
//
//        // 生成唯一文件名
//        String fileName = generateUniqueFileName("images", extension);
//        return uploadFile(imageFile, fileName);
//    }
//
//    @Override
//    public String uploadJsonFile(String jsonContent, String fileName) {
//        try {
//            // 确保文件名以.json结尾
//            if (!fileName.endsWith(".json")) {
//                fileName = fileName + ".json";
//            }
//
//            // 生成JSON文件路径
//            String objectName = "json/" + fileName;
//
//            log.info("开始上传JSON文件到七牛云OSS: {}", objectName);
//
//            // 获取上传凭证
//            String uploadToken = auth.uploadToken(bucketName);
//
//            // 将JSON内容转换为字节数组
//            byte[] jsonBytes = jsonContent.getBytes(StandardCharsets.UTF_8);
//
//            // 上传到七牛云
//            Response response = uploadManager.put(jsonBytes, objectName, uploadToken);
//
//            if (response.isOK()) {
//                String url = generateFileUrl(objectName);
//                log.info("JSON文件上传成功: {}", url);
//                return url;
//            } else {
//                throw new RuntimeException("七牛云上传响应异常: " + response.toString());
//            }
//        } catch (Exception e) {
//            log.error("JSON文件上传失败: {}", e.getMessage(), e);
//            throw new RuntimeException("JSON文件上传失败: " + e.getMessage());
//        }
//    }
//
//    @Override
//    public void deleteFile(String objectName) {
//        try {
//            // 七牛云删除操作需要创建BucketManager
//            com.qiniu.storage.BucketManager bucketManager = new com.qiniu.storage.BucketManager(auth,
//                    new Configuration(Region.autoRegion()));
//
//            bucketManager.delete(bucketName, objectName);
//            log.info("文件删除成功: {}", objectName);
//        } catch (QiniuException e) {
//            log.error("文件删除失败: {}", e.getMessage(), e);
//            throw new RuntimeException("文件删除失败: " + e.getMessage());
//        }
//    }
//
//    /**
//     * 生成文件访问URL
//     *
//     * @param objectName 对象名称
//     * @return 文件访问URL
//     */
//    private String generateFileUrl(String objectName) {
//        if (domain != null && !domain.trim().isEmpty()) {
//            // 使用自定义域名
//            return domain + "/" + objectName;
//        } else {
//            // 使用七牛云默认域名格式
//            return "https://" + bucketName + "." + endpoint + "/" + objectName;
//        }
//    }
//
//    /**
//     * 生成唯一文件名
//     *
//     * @param directory 目录名
//     * @param extension 文件扩展名
//     * @return 唯一文件名
//     */
//    private String generateUniqueFileName(String directory, String extension) {
//        String timestamp = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"));
//        String uuid = UUID.randomUUID().toString().replace("-", "").substring(0, 8);
//        return directory + "/" + timestamp + "_" + uuid + extension;
//    }
//
//    /**
//     * 获取上传凭证（可用于前端直传）
//     *
//     * @return 上传凭证
//     */
//    public String getUploadToken() {
//        return auth.uploadToken(bucketName);
//    }
//
//    /**
//     * 获取上传凭证（带过期时间）
//     *
//     * @param expireSeconds 过期时间（秒）
//     * @return 上传凭证
//     */
//    public String getUploadToken(long expireSeconds) {
//        return auth.uploadToken(bucketName, null, expireSeconds, null, true);
//    }
//}